import graphlab
graphlab.canvas.set_target('ipynb')
%matplotlib inline
songs = graphlab.SFrame('song_data.gl')
songs[0]
songs[0]
users = songs['user_id'].unique()
train_data, test_data = songs.random_split(0.8, seed=0)
# simple popularity-based recommender
pop_model = graphlab.popularity_recommender.create(train_data, user_id='user_id', item_id='song')
# make recommendations using pop_model
# drawback is every person is recommended the same things
print pop_model.recommend(users=[users[0]])
# personalized song recommender
per_model = graphlab.item_similarity_recommender.create(train_data, user_id='user_id', item_id='song')
# make recommendations using per_model
print per_model.recommend(users=[users[0]])
print per_model.get_similar_items(['With Or Without You - U2'])
# quantitative comparison between the models
%matplotlib inline
model_performance = graphlab.compare(test_data, [pop_model, per_model], user_sample=0.05)
# personalized recommender is so much better than popularity recommender
graphlab.show_comparison(model_performance,[pop_model, per_model])